Java Technologies Guava এর জন্য Unit Testing Techniques গাইড ও নোট

361

Google Guava লাইব্রেরি Java-তে Collections এবং Utilities ব্যবহারে সুবিধা প্রদান করে। Guava-এর জন্য Unit Testing করায় নিশ্চিত হওয়া যায় যে কোড সঠিকভাবে কাজ করছে এবং প্রত্যাশিত ফলাফল দিচ্ছে। নিচে Guava-ভিত্তিক Unit Testing-এর কিছু গুরুত্বপূর্ণ টেকনিক আলোচনা করা হলো:


1. Guava Collections-এর জন্য Unit Testing

Immutable Collections Test

Guava-এর ImmutableList, ImmutableMap, ইত্যাদি নিশ্চিত করে যে এগুলো পরিবর্তনযোগ্য নয়। Unit Test দিয়ে এটি যাচাই করা যেতে পারে।

import com.google.common.collect.ImmutableList;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class GuavaImmutableTest {
    @Test
    void testImmutableList() {
        ImmutableList<String> list = ImmutableList.of("A", "B", "C");
        
        // নিশ্চিত করুন লিস্টে ডেটা সঠিক
        assertEquals(3, list.size());
        assertTrue(list.contains("A"));
        
        // পরিবর্তন করার চেষ্টা করলে Exception হবে
        assertThrows(UnsupportedOperationException.class, () -> list.add("D"));
    }
}

Multimap Testing

Guava-এর Multimap একাধিক ভ্যালুকে একক কী-তে ম্যাপ করতে সক্ষম। এটি সঠিকভাবে কাজ করছে কি না তা নিশ্চিত করতে Unit Test ব্যবহার করা হয়।

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class GuavaMultimapTest {
    @Test
    void testMultimap() {
        Multimap<String, String> multimap = ArrayListMultimap.create();
        multimap.put("fruit", "apple");
        multimap.put("fruit", "orange");
        multimap.put("vegetable", "carrot");
        
        assertEquals(2, multimap.get("fruit").size());
        assertTrue(multimap.get("fruit").contains("apple"));
        assertEquals(1, multimap.get("vegetable").size());
    }
}

2. Caching Features-এর Unit Testing

Guava-এর Cache API ব্যবহার করে ডেটা ক্যাশিং কার্যকারিতা নিশ্চিত করার জন্য Unit Test প্রয়োজন।

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.junit.jupiter.api.Test;

import java.util.concurrent.TimeUnit;

import static org.junit.jupiter.api.Assertions.*;

class GuavaCacheTest {
    @Test
    void testCache() throws InterruptedException {
        Cache<String, String> cache = CacheBuilder.newBuilder()
                .expireAfterWrite(1, TimeUnit.SECONDS)
                .build();

        cache.put("key", "value");
        assertEquals("value", cache.getIfPresent("key"));

        // ক্যাশ মেয়াদ শেষ হওয়ার পরে পরীক্ষা
        Thread.sleep(1100);
        assertNull(cache.getIfPresent("key"));
    }
}

3. Optional Testing

Guava-এর Optional NullPointerException প্রতিরোধ করতে ব্যবহৃত হয়। এটি সঠিকভাবে কাজ করছে কি না তা Unit Test-এ যাচাই করা হয়।

import com.google.common.base.Optional;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class GuavaOptionalTest {
    @Test
    void testOptional() {
        Optional<String> present = Optional.of("Hello");
        Optional<String> absent = Optional.absent();

        assertTrue(present.isPresent());
        assertEquals("Hello", present.get());

        assertFalse(absent.isPresent());
        assertThrows(IllegalStateException.class, absent::get);
    }
}

4. Preconditions Testing

Guava-এর Preconditions ক্লাস Argument Validation-এর জন্য ব্যবহৃত হয়। এটি Unit Test দিয়ে নিশ্চিত করা যায়।

import com.google.common.base.Preconditions;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class GuavaPreconditionsTest {
    @Test
    void testPreconditions() {
        int x = 10;
        int y = 0;

        // শর্ত সঠিক থাকলে চলে যাবে
        Preconditions.checkArgument(x > 0);

        // শর্ত ভঙ্গ হলে Exception হবে
        assertThrows(IllegalArgumentException.class, () -> Preconditions.checkArgument(y > 0));
    }
}

5. Utility Methods Testing

Guava-এর বিভিন্ন Utility Methods যেমন Strings, Lists, ইত্যাদির জন্য Unit Testing করা হয়।

import com.google.common.base.Strings;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class GuavaUtilityTest {
    @Test
    void testStrings() {
        assertTrue(Strings.isNullOrEmpty(null));
        assertTrue(Strings.isNullOrEmpty(""));

        assertFalse(Strings.isNullOrEmpty("text"));

        assertEquals("0001", Strings.padStart("1", 4, '0'));
    }
}

6. Parameterized Testing

JUnit-এর Parameterized Testing ব্যবহার করে Guava-এর বিভিন্ন ইনপুট ও আউটপুট যাচাই করা যায়।

import com.google.common.collect.ImmutableList;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import static org.junit.jupiter.api.Assertions.*;

class GuavaParameterizedTest {
    @ParameterizedTest
    @ValueSource(strings = {"A", "B", "C"})
    void testImmutableListContains(String input) {
        ImmutableList<String> list = ImmutableList.of("A", "B", "C");
        assertTrue(list.contains(input));
    }
}

7. Exception Handling Testing

Guava ব্যবহারকালে যে Exception হতে পারে তা সঠিকভাবে Test করতে হবে।

import com.google.common.collect.ImmutableList;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class GuavaExceptionTest {
    @Test
    void testException() {
        ImmutableList<String> list = ImmutableList.of("A", "B", "C");

        assertThrows(IndexOutOfBoundsException.class, () -> list.get(5));
    }
}

Guava-এর Unit Testing করার সময় JUnit বা TestNG-এর মতো ফ্রেমওয়ার্ক ব্যবহার করে Test Case লিখতে পারেন। এই টেকনিকগুলো ব্যবহার করে আপনি Guava ভিত্তিক কোডের কার্যকারিতা এবং স্থায়িত্ব নিশ্চিত করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...